home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Meeting Pearls 4
/
Meeting Pearls Vol. IV (1996)(GTI - Schatztruhe)[!].iso
/
Pearls
/
dev
/
Language
/
CLisp
/
doc
/
News
< prev
next >
Wrap
Text File
|
1996-05-29
|
43KB
|
1,255 lines
30 May 1996
================
User visible changes
--------------------
* NO-APPLICABLE-METHOD did not allow for corrective action or
for escape. Thanks to Mark Thomas <thommark@access.digex.net>.
* REMOVE-METHOD didn't work.
Thanks to Roger Kehr <kehr@iti.informatik.th-darmstadt.de>
and Bruno Haible for the fix.
* Fixed a bug in the compiler: A (MULTIPLE-VALUE-SETQ vars valform)
or (MULTIPLE-VALUE-BIND vars valform ...) form was miscompiled if
valform is known to produce a single value.
Thanks to Bruno Haible and Paul Graham <pg@das.harvard.edu>.
* Added SOCKET-WAIT for testing for incoming connections.
Thanks to Marco Ramoni <M.Ramoni@open.ac.uk>.
Portability
-----------
* Partial support for Irix 6 (64 bit).
Thanks to Bruno Haible.
* Support for HPUX 10.
Thanks to Ricardo Aler Mur <aler@grial.uc3m.es>.
* Support for DJGPP version 2.
* Solaris binary distribution now distributed as a link kit.
17 April 1996
================
User visible changes
--------------------
* EXECUTE now returns the exit status of the subprocess. Thanks to
Bruno Haible and Brian F. Dennis <xjam@CS.Berkeley.EDU>.
* Fixed a bug in the compiler: MULTIPLE-VALUE-BIND failed to work when
given non-function forms. Thanks to Paul Graham <pg@das.harvard.edu>.
* TRANSLATE-LOGICAL-PATHNAME now accepts logical-pathname namestrings.
Thanks to Don Cohen <don@nichimen.com>
* Logical-pathname translation was broken under DOS.
Thanks to Don Cohen <don@nichimen.com>.
* Cross compiler was non-functional.
Thanks to Don Cohen <don@nichimen.com>.
* Fix for bug introduced in last loop macro change.
Thanks to Ken Olum <kdo@mit.edu> for reporting this right away.
Other modifications
-------------------
* Upgraded to autoconf 2.9.
* Upgraded to gettext-0.10.12.
Portability
-----------
* cygwin32 support updated for gnu-win32-b14.
* SINIX support updated. Thanks to Michael Becker <mb12@coconet.de>.
15 March 1996
================
User visible changes
--------------------
* New variable *IMAGE-PATHNAME* provides the pathname
resulting from the `-M' option.
* Fix for GC bug that could occur during buffered string output.
* Pipes can use binary I/O.
* RENAME-FILE now does *not* result in an error if the destination
file already exists (unless the system call results in an error message).
* PROBE-FILE and TRUENAME will not issue error messages if given
directories.
* On Unix, PARSE-NAMESTRING will not interpret a leading `.'
as a file with a type but no name. Instead, the file will include the `.'
in the name. Pathname syntax is unchanged.
Thanks to Robert Morris <rtm@uun.org>.
* Changes to loop macro to allow for derived FOR assignments from
hash-tables and counting variables. Improved previous fix
for derived values from list and vector iteration variables.
Thanks to Francisco Martin <martin@sinera.iia.csic.es> and
Russell Senior <seniorr@teleport.com>.
Portability
-----------
* DECstation 5000/Ultrix support updated. Thanks to Bruno Haible.
* NEXTSTEP support updated (version 3.3).
Thanks to Robert Murphy <robert.murphy@yale.edu>.
* The deema program is no longer used.
Empty macro arguments are explictly tagged as such.
* Win32 support split into a DOS- and a Unix-style sections.
The Unix version takes advantage of the Cygnus gnu-win32 DLL
to emulate a Unix-like environment, e.g. as there is a
`mount' program, there is no explicit support for drive names.
As of gnu-win32-b13.5, NT hosted builds are possible, e.g.:
`configure --build --disable-nls nt < /dev/null'
will autoconf and build CLISP from source.
Other modifications
-------------------
* Support for tracking dynamic bindings; useful for further multithread work.
Feature can be compiled-in by using -DDYNBIND_LIST.
* Top-level configure adds a GNU-like `--target' syntax for cross compilation.
* Non-GNU-gettext multilingual debugging binaries will no longer have
inaccurate line numbers.
* GNU gettext support now distributed in a separate package.
8 December 1995
================
User visible changes
--------------------
* Bug fix to prevent unbound slots from causing pathological
conflicts with the condition system. Thanks to Bruno Haible
and Heinrich Taube.
* When MAKE-PATHNAME :DIRECTORY is given a string, it is treated as
equivalent to (:ABSOLUTE string), as ANS dictates. Thanks
to Heinrich Taube for noticing this.
* Fixed a bug in the FFI where call-ins which returned structures or
unions would not compile correctly. Thanks to Michael Stoll.
* Added a <c-type>, C-PTR-NULL to the FFI. C-PTR-NULL will convert
NIL objects into NULL (so that type conflicts can be avoided).
* X3J13 vote <72> is implemented: all standard Common Lisp data objects
other than symbols and lists are self-evaluating.
Thanks to Pierpaolo Bernardi.
* SOCKET-STREAMS are implemented. See impnotes for details.
* Loop macro modified to allow sequential, list/vector-computed "FOR" values.
* Fixed a bug in the FFI which caused foreign double variables to be
incorrectly converted. Thanks to Bruno Haible and Ken Olum.
* Callbacks to code which don't respect CLISP global registers are possible.
Thanks to Bruno Haible and Ken Olum (Dec Alpha, OSF 2, FORTRAN).
* Fixed a double-float conversion routine used by the FFI.
0.0d0 wasn't dealt with properly. Thanks to Bruno Haible and Ken Olum.
* Fixed a bug in the FFI which prevented multidimensional arrays from
being used as :OUT arguments. Thanks to Ken Olum.
* Fixed a bug in the floating point number printing routine:
In rare cases, a number was printed with more digits than necessary
(without, however, violating the print-read consistency). For example,
2.1416s29 printed as 2.14159s29, and 3.002618f-31 printed as 3.0026179f-31.
Thanks to Bruno Haible.
* Fixed a bug in ATAN: (ATAN y 0) with y < 0 returned pi/2 instead of -pi/2.
Thanks to Bruno Haible.
* Fixed a bug in FORMAT which could (in very rare cases) have caused a
wrong number to be printed by the FORMAT ~F, ~G, ~$, ~E directives.
Portability
-----------
* Runs on Windows NT.
* FreeBSD/NetBSD patches and compilation notes thanks to
Douglas Crosher (dtc@stan.xx.swin.oz.au).
* Updated OS/2 support thanks to Raymond Keoni Garcia
(rkgarcia@students.wisc.edu).
* Remove Atari support.
* On systems where both the select system call and FIONREAD ioctl were
indicated, take select in preference. On Irix, where FIONREAD was
only apparently available, CLISP went into a `function call not
implemented' OS error loop. Symptom also could occur in Emacs (e.g. Ilisp).
Other modifications
-------------------
* Upgraded gettext support to version 0.10. This provides locale name
aliasing like with X Windows.
* Upgraded to autoconf-2.7.
* Specify bash for makefile.developer's makemake.
Some shells may convert backslash sequences to control codes --
the prebuilt dos, os2, etc. makefiles were previously corrupted.
* The top-level CLISP `configure' can be used in a more GNU-like
fashion. Specifically, there is a `--srcdir' option, with which
`makemake' runs by default.
12 August 1995
============
User visible changes
--------------------
* CLISP now supports the GNU gettext package. Non-gettext internationalization
support still available with "--disable-nls".
* Self referencing symbolic links were not always avoided during
directory searches. Thanks to Dan Stanger for pointing this out.
* Fixed a bug in XGCD which caused the results to be wrong with a small
probability, for example in the case (XGCD 77874422 32223899).
Thanks to Bruno Haible and Michael Stoll.
* Top level configure accepts absolute build directory.
* Top level configure now passes on --exec-prefix, --prefix, and --srcdir
to makemake.
Portability
-----------
* Runs on Solaris 2.4 with SUNWspro (3.0.1). Thanks to Bruno Haible.
* Runs on Solaris 2.4/sun4m with GCC (2.6.3).
* Repair of memmove-related build problem on SunOS/Solaris.
Thanks to Bruno Haible.
* Fixed a bug in mips/avcall.
* arimips.s now assembled with -KPIC to avoid problems during incremental
linking of lisp.o.
23 June 1995
============
Important note
--------------
* Changed bytecode format. All .fas files generated by previous CLISP versions
are invalid and must be recompiled.
User visible changes
--------------------
* X3J13 vote <106> is implemented: LAST has an optional argument. Thanks to
Pierpaolo Bernardi.
* X3J13 vote <87> is implemented: New function COMPLEMENT. Thanks to Pierpaolo
Bernardi.
* X3J13 vote <40> is partially implemented: New macro WITH-STANDARD-IO-SYNTAX.
Thanks to Pierpaolo Bernardi.
* X3J13 vote <98> is partially implemented: New macro WITH-HASH-TABLE-ITERATOR.
Thanks to Pierpaolo Bernardi.
* X3J13 vote <97> is implemented: New functions HASH-TABLE-REHASH-SIZE,
HASH-TABLE-REHASH-THRESHOLD, HASH-TABLE-SIZE, HASH-TABLE-TEST.
Thanks to Pierpaolo Bernardi.
* X3J13 votes <69> and <70> are implemented: New declaration DYNAMIC-EXTENT.
* The dpANS macro LAMBDA is implemented.
* The dpANS declaration IGNORABLE is implemented.
* The dpANS function CONSTANTLY is implemented. Thanks to Pierpaolo Bernardi.
* Better syntax checking for the CASE macro. Thanks to Pierpaolo Bernardi.
* The user interface language may be chosen through the environment variable
LANG as well.
* The pretty printer now indents lists spanning more than one line by two
spaces, instead of one. New variable *PRINT-INDENT-LISTS*.
* *PRINT-PRETTY* is now initially T.
* Foreign function interface: New foreign type constructor FFI:C-ARRAY-MAX,
implements zero-terminated arrays of bounded size.
* On Unix, 8-bit characters are legal in pathnames if the operating system
accepts them.
* On DOS, #\Newline is converted to CR/LF when doing character output to
unbuffered file streams (referring to special files).
* Fixed a bug in the interpreter and compiler: A MULTIPLE-VALUE-SETQ form
which assigns to a symbol macro expanded to a wrong form; compiling it
produced a warning. Thanks to Pierpaolo Bernardi.
* Fixed a bug in the compiler: Some CASE form with duplicate keys, when
compiled, chose the wrong clause to be executed. Thanks to Pierpaolo
Bernardi.
* Fixed a bug in the #+/#- reader macros. (LIST #+FOO #-BAR 1 2 3) now returns
(2 3), not (3).
* Fixed a bug in LOG: (LOG x^n x^m), where n, m are integers, |m| > 1, and
x is a rational number /= 1, now correctly returns n/m. Previously,
(LOG 2 4) returned 1/0.
* Fixed a CLOS bug: Using the :DOCUMENTATION option in DEFGENERIC declarations
for function names of the form (SETF symbol) signalled an error. Thanks to
Pierpaolo Bernardi.
* Fixed a bug in DEFSETF: An IGNORE declaration for the store variable had
no effect. Thanks to Pierpaolo Bernardi.
Other modifications
-------------------
* The structure of external modules has changed a bit.
25 April 1995
=============
User visible changes
--------------------
* Michael Stoll has written a graphical user interface for CLISP under
NeXTstep.
* Added a foreign language module WILDCARD for wildcard matching.
* Added a foreign language module REGEXP for Unix-style regular expression
matching and searching.
* X3J13 vote <94> is implemented: Calling GENSYM has no side effects except
incrementing the counter. New variable *GENSYM-COUNTER*.
* New macro FORMATTER converts a FORMAT control string to a function.
* Some FORMAT fixes:
+ X3J13 vote <81> is implemented: The FORMAT ~:^ directive is more useful.
Warning: Old style "~:^" directives need to be converted to "~#:^".
+ X3J13 vote <82> is implemented: The FORMAT ~D, ~B, ~O, ~X, ~R directives
accept an optional comma-interval parameter.
+ X3J13 vote <84> is implemented: FORMAT ~C outputs characters with no bits
as if by WRITE-CHAR.
+ Handling of ~^ within the FORMAT ~? directive.
* X3J13 vote <167> is implemented: New types FILE-STREAM, SYNONYM-STREAM,
BROADCAST-STREAM, CONCATENATED-STREAM, TWO-WAY-STREAM, ECHO-STREAM,
STRING-STREAM. New functions OPEN-STREAM-P, SYNONYM-STREAM-SYMBOL,
BROADCAST-STREAM-STREAMS, CONCATENATED-STREAM-STREAMS,
TWO-WAY-STREAM-INPUT-STREAM, TWO-WAY-STREAM-OUTPUT-STREAM,
ECHO-STREAM-INPUT-STREAM, ECHO-STREAM-OUTPUT-STREAM.
* New condition type PRINT-NOT-READABLE.
New function PRINT-NOT-READABLE-OBJECT.
* New function FINALIZE. (FINALIZE object function) has the effect that
function will be called when object is being garbage collected.
* DRIBBLE now also redirects *ERROR-OUTPUT*, *TRACE-OUTPUT*, *QUERY-IO*,
*DEBUG-IO* if they refer to *TERMINAL-IO*.
* Calling SYMBOL-VALUE on a symbol defined as global symbol macro now returns
the value of the expansion. New function SYMBOL-MACRO-EXPAND.
* Add FFI to the *FEATURES* if the foreign language interface is present.
* Fixed a bug: An IGNORE declaration for a macro's &ENVIRONMENT argument now
has an effect.
* Fixed a couple of bugs in the foreign language interface: Passing zero size
arrays did not work, parameters with mode :OUT did not work on SPARC and
HP-PA, and some error messages were deficient.
* Fixed a bogus error message in SET-DISPATCH-MACRO-CHARACTER.
Other modifications
-------------------
* Speed up compiled calls to FORMAT with literal control string by use of
FORMATTER.
4 April 1995
============
User visible changes
--------------------
* The initial value of *PACKAGE* can be specified by a command line option.
* X3J13 vote <6> is implemented: New place ROW-MAJOR-AREF.
* X3J13 vote <126> is implemented: New function DELETE-PACKAGE.
* X3J13 vote <14> is implemented: Closing a synonym stream does not close
its constituent stream.
* Foreign language interface for C and ANSI C. New package FFI. New macros
FFI:DEF-C-TYPE, FFI:DEF-C-VAR, FFI:DEF-C-CALL-OUT, FFI:DEF-C-CALL-IN,
FFI:DEF-C-ENUM, FFI:DEF-C-STRUCT, FFI:DEF-CALL-OUT, FFI:DEF-CALL-IN,
FFI:ELEMENT, FFI:DEREF, FFI:SLOT, FFI:CAST, FFI:TYPEOF, FFI:SIZEOF,
FFI:BITSIZEOF.
This currently works only on Unix and only with the CPUs
i386/486/586, m680x0, Mips, SPARC, DEC Alpha, HP-PA, RS/6000.
Warning: (COMPILE-FILE "filename.lsp") now overwrites the file "filename.c".
* New macros MUFFLE-CERRORS and APPEASE-CERRORS. During their execution,
continuable errors are handled by the function CONTINUE. MUFFLE-CERRORS
does this silently, APPEASE-CERRORS prints the error as a warning.
* New macro EXIT-ON-ERROR. During its execution, non-continuable errors
cause CLISP to exit with error status.
* The function ED, when asked to edit a non-existent file, now creates that
file instead of signalling an error.
* When a non-absolute pathname is specified for the -o command line option
(destination file of a compilation), it is interpreted as relative to the
current directory, not relative to the source file of the compilation.
* The readline library now uses the last column of the screen if the terminal
is an xterm, for example. Work done by Chet Ramey.
* Fixed two bugs in the LOOP macro: FOR-AS-ACROSS clauses could result in AREF
signalling an out-of-bounds error at the end of the vector. Initialisations
for FOR-AS-= clauses could be executed in the wrong order.
* Fixed a bug in the compiler which caused LOAD-TIME-VALUE forms to be
evaluated at compile time.
* Fixed a bug in the debugger: Choosing a restart Rnnn always invoked the
last restart listed, not the chosen one.
* Fixed a bug: (CLOSE *TERMINAL-IO*) signals an error again.
* On DOS and OS/2, the Lisp reader now treats Ctrl-Z as whitespace.
* The -I command line option now tells the readline library to handle the Tab
character as normal self-inserting character.
* Unix version only: DISASSEMBLE can display machine instructions, provided
that GNU gdb is present.
Other modifications
-------------------
* Generational garbage collection now also works on IRIX 5.2.
* Generational garbage collection and support for immutable objects don't
exclude each other any more.
1 January 1995
==============
Important note
--------------
* Changed bytecode format. All .fas files generated by previous CLISP versions
are invalid and must be recompiled.
User visible changes
--------------------
* The destination file of a compilation can be specified by a command line
option.
* X3J13 vote <152> is implemented: REDUCE has a keyword argument :KEY.
* The printed representation of file streams of element type STRING-CHAR now
contains a line number.
* Fixed a bug which caused the interpreter to signal an error when evaluating
nested DEFUNs.
* Fixed a bug which could cause a crash when a GC occurred during single or
double float subtraction.
Other modifications
-------------------
* Generational garbage collection now also works on NeXTstep and OSF/1 3.0.
26 October 1994
===============
Important note
--------------
* Changed bytecode format. All .fas files generated by previous CLISP versions
are invalid and must be recompiled.
User visible changes
--------------------
* X3J13 vote <77> is implemented: CL:FLET, CL:LABELS, CL:MACROLET allow
declarations.
* X3J13 vote <78> is implemented: CL:FLET, CL:LABELS, CL:MACROLET, DEFTYPE,
DEFSETF, DEFINE-SETF-METHOD establish an implicit BLOCK.
* X3J13 vote <128> is implemented: MAKE-PATHNAME, PATHNAME-HOST,
PATHNAME-DEVICE, PATHNAME-DIRECTORY, PATHNAME-NAME, PATHNAME-TYPE have
a keyword argument :CASE. Thanks to Marcus Daniels.
* X3J13 vote <137> is implemented: New functions WILD-PATHNAME-P,
PATHNAME-MATCH-P and TRANSLATE-PATHNAME. Thanks to Marcus Daniels.
* X3J13 vote <130> is implemented: New built-in type LOGICAL-PATHNAME.
New place LOGICAL-PATHNAME-TRANSLATIONS. New functions LOGICAL-PATHNAME,
TRANSLATE-LOGICAL-PATHNAME, LOAD-LOGICAL-PATHNAME-TRANSLATIONS,
COMPILE-FILE-PATHNAME. Thanks to Marcus Daniels.
* X3J13 vote <132> is implemented: Synonym streams to file streams are
allowed as pathnames.
* Amiga version: SCREEN package is implemented. Thanks to Jörg Höhle.
* The debugger emits some more messages to *DEBUG-IO*, not *ERROR-OUTPUT*.
* (COERCE symbol 'FUNCTION) now works.
* Fixed a bug in ENOUGH-NAMESTRING: In many cases, a relative directory
specification was returned instead of an absolute directory specification.
* Fixed a CLOS bug which caused (DEFCLASS FOO (STANDARD-OBJECT) ()) and
(DEFINE-CONDITION FOO (CONDITION) ()) to signal errors.
* Fixed a bug: In some situations, USE-PACKAGE reported a name conflict when
there was none.
* Fixed a bug: (READ-CHAR-NO-HANG stream nil eof-object) now signals an error
if stream is not an input stream. Previously it returned eof-object.
* Fixed a bug: On some Unix systems, (FINISH-OUTPUT *TERMINAL-IO*) signalled
an error if standard output was redirected to a file.
* (SQRT 0) now returns an integer 0 instead of a floating-point 0.0.
* Readline library: Fixed a small problem with input prompts longer than the
screen width.
* Fixed three bugs in the built-in editor. One of them made the editor
entirely unusable.
Portability
-----------
* On DOS, the readline library now handles the /!INPUTRC and history files
correctly.
Other modifications
-------------------
* Generational garbage collection now also works on Linux (1.1.52 or newer).
* On Unix, external modules written in C can be linked to CLISP without
recompiling CLISP from source. For example, the STDWIN library.
1 September 1994
================
User visible changes
--------------------
* The DEFCONSTANT warning about redefinition of a constant is also inhibited
if the constant's new and old values are the same string (in the sense of
EQUAL). Thanks to Marcus Daniels.
* Unix version only: The daylight saving time flag of a time zone (eighth
value of GET-DECODED-TIME and DECODE-UNIVERSAL-TIME) is now correct.
23 August 1994
==============
User visible changes
--------------------
* X3J13 vote <64> is implemented: New macro DESTRUCTURING-BIND.
* The function ED can now edit functions that have been entered in
interpreted form even if they have later been compiled.
* New function UNCOMPILE. (UNCOMPILE function-name) undoes the effect of
(COMPILE function-name) if the function's definition had been entered
in interpreted form.
* The OPEN option :IF-EXISTS :RENAME-AND-DELETE now deletes the renamed
file. Previously :RENAME-AND-DELETE was equivalent to :RENAME.
* (LISP-IMPLEMENTATION-VERSION) returns a more precise version string.
* Readline library: Completion of a function call with no arguments
automatically adds the closing parenthesis.
* Readline library: When a closing parenthesis is typed, the corresponding
opening parenthesis is displayed.
Other modifications
-------------------
* Copyright clarification.
* Added a readline manual page.
4 July 1994
===========
User visible changes
--------------------
* X3J13 votes <115> and <114> are implemented: an elaborate LOOP macro.
New macro LOOP-FINISH.
Warning: The scoping rules for the iteration variables are hairy. If a
FOR/AS initialisation form refers to an iteration variable of a subsequent
FOR/AS clause, the effects are implementation dependent!
* X3J13 vote <120> is implemented: New function MAP-INTO.
* X3J13 vote <79> is implemented: New constants
LEAST-POSITIVE-NORMALIZED-SHORT-FLOAT,
LEAST-NEGATIVE-NORMALIZED-SHORT-FLOAT,
LEAST-POSITIVE-NORMALIZED-SINGLE-FLOAT,
LEAST-NEGATIVE-NORMALIZED-SINGLE-FLOAT,
LEAST-POSITIVE-NORMALIZED-DOUBLE-FLOAT,
LEAST-NEGATIVE-NORMALIZED-DOUBLE-FLOAT,
LEAST-POSITIVE-NORMALIZED-LONG-FLOAT,
LEAST-NEGATIVE-NORMALIZED-LONG-FLOAT.
* The macro WITH-OUTPUT-TO-PRINTER now also works on DOS.
* Fixed a bug in DO-SYMBOLS: A symbol which is exported from a used package
was considered accessible in the using package even if it was shadowed by
another present symbol of the same name.
* Fixed a bug in the debugger which caused the BACKTRACE commands to print
garbage if the current user interface language was not english.
22 June 1994
============
User visible changes
--------------------
* French support is now complete. Thanks to Jörg Höhle.
* The user interface language (english, german or french) can now be chosen
at startup time through a command line option. The constant *LANGUAGE* has
been removed, and its value has been removed from *FEATURES*. New macros
ENGLISH, DEUTSCH, FRANCAIS and LANGUAGE-CASE.
* There is a command line option that makes CLISP behave more like what
ILISP (a popular Emacs LISP interface) expects.
* The function CLOS:CALL-NEXT-METHOD can now be called with arguments, but
the check that the set of applicable methods must be the same as for the
original arguments will be bypassed.
* New functions READ-CHAR-SEQUENCE, WRITE-CHAR-SEQUENCE, READ-BYTE-SEQUENCE,
WRITE-BYTE-SEQUENCE which perform fast block I/O.
* Errors of type FLOATING-POINT-UNDERFLOW are inhibited in floating point
computations (and zero is returned instead) during execution of the new
macro WITHOUT-FLOATING-POINT-UNDERFLOW.
* X3J13 vote <95> is implemented: If the readtable argument passed to
GET-MACRO-CHARACTER and GET-DISPATCH-MACRO-CHARACTER is NIL, the standard
readtable is used.
* PROBE-FILE doesn't report an error any more if an intermediate directory
in the path doesn't exist. NIL is returned instead.
* The DEFCONSTANT warning about redefinition of a constant is inhibited if
the constant's new and old values are the same (in the sense of EQL).
Thanks to Marcus Daniels.
* The function INTERACTIVE-STREAM-P knows that if the terminal stream is
referring to a regular file (via input redirection) it is not interactive.
* There is a user programmable kind of streams, called generic streams.
New functions MAKE-GENERIC-STREAM, GENERIC-STREAM-CONTROLLER,
GENERIC-STREAM-P, GENERIC-STREAM-READ-CHAR, GENERIC-STREAM-READ-BYTE,
GENERIC-STREAM-LISTEN, GENERIC-STREAM-WRITE-CHAR, GENERIC-STREAM-WRITE-BYTE,
GENERIC-STREAM-WRITE-STRING, GENERIC-STREAM-CLEAR-INPUT,
GENERIC-STREAM-CLEAR-OUTPUT, GENERIC-STREAM-FINISH-OUTPUT,
GENERIC-STREAM-FORCE-OUTPUT, GENERIC-STREAM-CLOSE.
See impnotes.txt for details. Thanks to Marcus Daniels and Don Cohen.
* The macro WITH-OUTPUT-TO-PRINTER may now also work on OS/2.
* Fixed a CLOS bug: Generic functions with both optional and keyword
arguments didn't work.
* Fixed a serious bug in the compiler which caused incorrect code to be
generated for functions like (LAMBDA (X) (SETQ X 1)).
* Fixed a serious bug in the compiler which caused the compiler to crash
when compiling functions which contain two or more calls to ASSERT.
* Fixed a bug: The macroexpander of MULTIPLE-VALUE-SETQ built up a
syntactically illegal form.
* Fixed a bug in the reader: When reading pathnames from the syntax
#S(PATHNAME ...), #n# references in pathname components were not
resolved prior to calling MAKE-PATHNAME.
* Fixed a bug in the reader: (read-from-string "1/") signalled an error
of type DIVISION-BY-ZERO.
* Fixed a bug in the terminal stream: If several consecutive READ-LINE
operations on the terminal stream were performed without any text
containing newlines being output between them, the prompt finally got
duplicated and then became longer and longer.
* Fixed a bug in the readline library (bad handling of prompts longer than
one line). Thanks to Marcus Daniels.
Installation
------------
* All non-Unix versions: Setting the local time zone should now be much
easier. 122 time zone names are supported.
8 January 1994
==============
None.
7 January 1994
==============
Important note
--------------
* Changed bytecode format. All .fas files generated by previous CLISP versions
are invalid and must be recompiled.
User visible changes
--------------------
* X3J13 votes <186> and <31> are implemented: the Common Lisp Condition System.
New macros
DEFINE-CONDITION, IGNORE-ERRORS, HANDLER-CASE, HANDLER-BIND,
RESTART-CASE, WITH-RESTARTS, WITH-SIMPLE-RESTART, RESTART-BIND,
WITH-CONDITION-RESTARTS,
new types
RESTART, CONDITION, SERIOUS-CONDITION, ERROR, PROGRAM-ERROR, CONTROL-ERROR,
ARITHMETIC-ERROR, DIVISION-BY-ZERO, FLOATING-POINT-OVERFLOW,
FLOATING-POINT-UNDERFLOW, CELL-ERROR, UNBOUND-VARIABLE, UNDEFINED-FUNCTION,
TYPE-ERROR, PACKAGE-ERROR, STREAM-ERROR, END-OF-FILE, FILE-ERROR,
STORAGE-CONDITION, WARNING,
SIMPLE-CONDITION, SIMPLE-ERROR, SIMPLE-TYPE-ERROR, SIMPLE-WARNING,
new functions
MAKE-CONDITION, SIGNAL, COMPUTE-RESTARTS, FIND-RESTART, INVOKE-RESTART,
INVOKE-RESTART-INTERACTIVELY, ABORT, CONTINUE, MUFFLE-WARNING, STORE-VALUE,
USE-VALUE, INVOKE-DEBUGGER, RESTART-NAME,
ARITHMETIC-ERROR-OPERATION, ARITHMETIC-ERROR-OPERANDS, CELL-ERROR-NAME,
TYPE-ERROR-DATUM, TYPE-ERROR-EXPECTED-TYPE, PACKAGE-ERROR-PACKAGE,
STREAM-ERROR-STREAM, FILE-ERROR-PATHNAME, SIMPLE-CONDITION-FORMAT-STRING,
SIMPLE-CONDITION-FORMAT-ARGUMENTS,
new variables
*BREAK-ON-SIGNALS*, *DEBUGGER-HOOK*.
See impnotes.txt for details. Thanks to David Gadbois who wrote most of this.
* X3J13 vote <40> is partially implemented: New variable *PRINT-READABLY*.
* X3J13 vote <34> is implemented: Arrays and packages may now appear as
constants in compiled code.
* X3J13 vote <90> is implemented: FUNCTIONP on symbols and conses now always
returns NIL. The type FUNCTION is disjoint from SYMBOL and CONS.
(COERCE object 'FUNCTION) is implemented.
Warning: Old style calls like
(FUNCTIONP object)
may need to be converted to
(OR (FUNCTIONP object)
(SYMBOLP object)
(AND (CONSP object) (EQ (CAR object) 'LAMBDA))
)
This fixes a CLOS bug: (TYPEP object 'FUNCTION) wasn't equivalent to
(TYPEP object (FIND-CLASS 'FUNCTION)).
* Two new debugger commands Break+ and Break- permit to set resp. remove
breakpoints at specified EVAL or APPLY frames.
* Warnings and errors produced by COMPILE-FILE are now accompanied by
source line number information.
* The sub-char passed as second argument to read dispatch macros is now
exactly the first non-digit read from the stream. Previously it was its
upper-case equivalent.
* DEFPACKAGE now accepts an option (:DOCUMENTATION doctring).
* DIRECTORY now accepts a keyword argument :CIRCLE. If it is non-NIL,
the directory search for ".../" and "**/" wildcards on Unix avoids endless
loops that may result from symbolic links.
* The variable *LOAD-PATHS* in the Unix versions of config.lsp now uses
"~/" (the home directory at run time) instead of #"~/" (the home directory
at installation time). Thanks to Gabor Herr.
* Unix and OS/2 versions: New dangerous functions MAKE-PIPE-IO-STREAM,
RUN-SHELL-COMMAND and RUN-PROGRAM.
* Unix version only:
The command shell used by MAKE-PIPE-...-STREAM is now always /bin/sh; the
environment variable SHELL is only used as interactive shell.
Fixed a race condition in the functions EXECUTE, MAKE-PIPE-INPUT-STREAM,
MAKE-PIPE-OUTPUT-STREAM that caused the child process to fail mysteriously.
* Attacks such as (DO-ALL-SYMBOLS (S) (UNLESS (CONSTANTP S) (SET S NIL)))
no longer crash CLISP.
* Fixed a CLOS bug: DEFCLASS failed to signal an error if several direct slots
had identical names.
* Fixed a bug in the reader: When reading hash tables which contain #n#
references, the hash codes must be recomputed after resolving the
references. Thanks to Marcus Daniels.
* Fixed a bug in the printer: Printed representations with two different
#1= definitions could result when PRINT-OBJECT methods were called while
*PRINT-CIRCLE* was true. Thanks to Marcus Daniels.
8 November 1993
===============
User visible changes
--------------------
* The STDWIN library can now be made part of CLISP by calling makemake with
argument --with-stdwin.
* X3J13 vote <108> is implemented: New packages COMMON-LISP and
COMMON-LISP-USER.
* X3J13 vote <112> is implemented:
LOAD binds the variables *LOAD-PATHNAME* and *LOAD-TRUENAME*, COMPILE-FILE
binds the variables *COMPILE-FILE-PATHNAME* and *COMPILE-FILE-TRUENAME*.
New variables *LOAD-PATHNAME*, *LOAD-TRUENAME*, *COMPILE-FILE-PATHNAME*,
*COMPILE-FILE-TRUENAME*.
* X3J13 vote <26> is implemented: COMPILE-FILE has a keyword argument :PRINT.
New variables *COMPILE-WARNINGS*, *COMPILE-VERBOSE*, *COMPILE-PRINT*.
* Fixed two bugs in DEFPACKAGE: *PACKAGE* is not modified by DEFPACKAGE
any more, and the :INTERN option now works.
* Fixed FUNCTION-LAMBDA-EXPRESSION such that it works on built-in functions.
Thanks to France Dacar.
* Fixed a serious bug in GCD on 16-bit processors: (GCD x y) with
2^k - 2^(k-16) <= |x|,|y| < 2^k could cause a division by zero.
27 September 1993
=================
User visible changes
--------------------
* COMPILE-FILE now handles top-level forms as described in CLtL2 p. 90:
The macroexpansion of a top-level form is considered a top-level form.
When a top-level form is a PROGN, LOCALLY, COMPILER-LET, SYMBOL-MACROLET
or MACROLET form, the subforms of its body are considered top-level forms
too and are compiled separately.
This allows things like
(PROGN (DEFCONSTANT X 3141) (DEFUN GET-X () X))
or
(PROGN (DEFCLASS SHIP () ()) (DEFUN SHIP-P (X) (TYPEP X 'SHIP)))
to work.
Warning: If you want to inhibit this splitting into separate forms (for
example, because several of the forms refer to the same uninterned symbol),
you have to use (LET () (PROGN ...)) instead of (PROGN ...).
* X3J13 vote <144> is implemented: New macro DECLAIM.
* X3J13 vote <113> is implemented: The macro LOCALLY is now a special form.
* Fixed a serious bug in the compiler: When compiling functions inline
whose parameters are special variables, incorrect code could be generated.
* Fixed a bug in the compiler which caused the compiler to crash in some
rare cases, notably when compiling Garnet-2.2.
* Fixed a bug that prevented the debugger commands DOWN and BOTTOM from
working on Linux and SunOS.
* Fixed a CLOS bug: Specifying &KEY without &REST in generic function
lambda lists didn't have the desired effect.
* DEFCLASS supports both :DEFAULT-INITARGS syntaxes.
* DEFGENERIC is more tolerant about invalid declarations.
1 September 1993
================
Important note
--------------
* Changed bytecode format. All .fas files generated by previous CLISP versions
are invalid and must be recompiled.
User visible changes
--------------------
* Unix version only: The command line option -M now also accepts memory images
that were compressed using GNU gzip.
* Fixed a CLOS bug: MAKE-INSTANCE now behaves as if it were calling
INITIALIZE-INSTANCE, and INITIALIZE-INSTANCE and REINITIALIZE-INSTANCE
behave as if they were calling SHARED-INITIALIZE.
* Fixed a CLOS bug: NO-APPLICABLE-METHOD failed to be called in some cases
when no method was applicable.
* Relating to X3J13 vote <89>: The first argument to the functions FUNCALL and
APPLY, denoting a function, may now also be a list (SETF symbol).
* Fixed a bogus error message that occurred when storing an out-of-range
integer into an array of element-type (UNSIGNED-BYTE 32).
22 August 1993
==============
Important note
--------------
* Changed bytecode format. All .fas files generated by previous CLISP versions
are invalid and must be recompiled.
User visible changes
--------------------
* X3J13 vote <12> is partially implemented: Native CLOS. New package CLOS
containing the macros
DEFCLASS, DEFMETHOD, DEFGENERIC, GENERIC-FUNCTION, GENERIC-FLET,
GENERIC-LABELS, WITH-SLOTS, WITH-ACCESSORS,
the functions
FIND-CLASS, (SETF FIND-CLASS), CLASS-OF, CLASS-NAME, (SETF CLASS-NAME),
SLOT-VALUE, SLOT-BOUNDP, SLOT-MAKUNBOUND, SLOT-EXISTS-P,
CALL-NEXT-METHOD, NEXT-METHOD-P,
NO-APPLICABLE-METHOD, NO-PRIMARY-METHOD, NO-NEXT-METHOD,
FIND-METHOD, ADD-METHOD, REMOVE-METHOD, COMPUTE-APPLICABLE-METHODS,
METHOD-QUALIFIERS, FUNCTION-KEYWORDS, SLOT-MISSING, SLOT-UNBOUND,
PRINT-OBJECT, DESCRIBE-OBJECT, MAKE-INSTANCE, INITIALIZE-INSTANCE,
REINITIALIZE-INSTANCE, SHARED-INITIALIZE,
the classes
STANDARD-CLASS, STRUCTURE-CLASS, BUILT-IN-CLASS, STANDARD-OBJECT,
STANDARD-GENERIC-FUNCTION, STANDARD-METHOD and all predefined classes,
and the method combination
STANDARD.
See impnotes.txt for details. X3J13 vote <13> is implemented, too.
* X3J13 vote <63> is implemented: DESCRIBE receives the output stream as
optional argument. New function CLOS:DESCRIBE-OBJECT.
* X3J13 vote <149> is implemented: The second argument to SUBSEQ may now
be NIL. Thanks to Thomas Kirk.
* X3J13 vote <175> is implemented: TAILP now also works on dotted lists.
* X3J13 vote <124> is implemented: (DECLARE (OPTIMIZE (DEBUG ...))) is legal.
* The type specifier (EQL object), a synonym for (MEMBER object), is now
implemented.
* New DEFSTRUCT option :INHERIT which is exactly like :INCLUDE except that it
doesn't create new accessors for the inherited slots. Use this option to
avoid the problems that occur when using the same :CONC-NAME for the new
and the inherited structure.
* Fixed EXPORT and USE-PACKAGE: Don't signal a name conflict between the
symbol being exported and a symbol accessible in the using package if
the latter symbol is on the list of shadowing symbols of the using package.
* Fixed VECTOR-PUSH-EXTEND. It now works on vectors of dimension 0 and
on bit-vectors.
* Fixed PRINT-UNREADABLE-OBJECT: Don't output adjacent spaces.
* Fixed a bug in the reader that caused an endless loop or endless recursion
when resolving #n=/#n# references in objects that already contained cyclic
data structures, e.g. when reading (#1=a #.'#2=(b . #2#) #1#).
* Fixed a bogus error message in the complex number reader.
17 July 1993
============
User visible changes
--------------------
* X3J13 vote <150> is mostly implemented: Reading and printing of symbols
(and characters with bits or fonts attributes) is now affected by
(READTABLE-CASE *READTABLE*), whose value may be one of :UPCASE, :DOWNCASE
and :PRESERVE. New place READTABLE-CASE.
* Support for immutable objects is implemented. Attempts to modify read-only
data will signal an error. Program text and quoted constants loaded from
files are considered read-only data. Never again will you be allowed to
write programs that destructively modify themselves!
This works only for Unix implementations with powerful virtual memory
management, currently only Linux and SunOS. To enable it, you have to
add -DIMMUTABLE to the CFLAGS in the makefile when building CLISP.
* Fixed DEFUN such that
(progn
(flet ((bar (x) (+ x 10))) (defun bar (y) (if (zerop y) 1 (bar (1- y))))
(bar 1)
)
returns 10 instead of 1.
* Fixed a bug in the compiler that caused the compiler to crash by endless
recursion and stack overflow when compiling assignments to symbol macros.
29 June 1993
============
User visible changes
--------------------
* X3J13 vote <89> is implemented: (SETF symbol) is now a valid syntax for a
function name in (funname ...), (FUNCTION funname), (DEFUN funname ...),
(COMPILE funname ...), (DISASSEMBLE funname), (ED funname), FLET, LABELS etc.
New function FDEFINITION.
* X3J13 vote <173> is implemented: New special form SYMBOL-MACROLET. The
macroexpansion environment passed to macro expanders and to MACROEXPAND-1,
MACROEXPAND, GET-SETF-METHOD, GET-SETF-METHOD-MULTIPLE-VALUE now comprises
both the variable environment and the function environment.
New macro DEFINE-SYMBOL-MACRO.
* New macro PRINT-UNREADABLE-OBJECT.
* Fixed a bug: The string comparison functions STRING<, STRING>, STRING<=,
STRING>=, STRING/=, STRING-LESSP, STRING-GREATERP, STRING-NOT-GREATERP,
STRING-NOT-LESSP, STRING-NOT-EQUAL now return the index of the first mismatch
instead of T.
* Fixed a bug: The functions REMOVE-DUPLICATES and DELETE-DUPLICATES produced
an out-of-bounds error when called on a small sequence, with :FROM-END T
argument and without :END argument.
24 May 1993
===========
User visible changes
--------------------
* New macro DEFPACKAGE.
* New function FUNCTION-LAMBDA-EXPRESSION.
* New package SCREEN containing some functions for random screen access
(Unix, DOS, OS/2, Atari, VMS versions only).
* X3J13 vote <5> is implemented: The value of *APPLYHOOK* must now be
a function of two arguments.
* X3J13 vote <104> is implemented: COMPILE-FILE now binds *READTABLE*.
* X3J13 vote <161> is implemented: SHADOW now accepts strings as well
as symbols.
* Fixed a bug in the compiler which caused the compiler to crash when
compiling (CASE key ...) forms with constant key.
* Fixed a bug in the compiler which produced unloadable .fas files
when compiling forms like (SETF ... (FUNCTION LIST)).
* Fixed a bogus error message in the AREF function.
* The built-in editor on Unix now handles the Delete key the same way
as the Backspace key or Ctrl-H.
* Fixed a bug in + that occasionally caused (- x x) to return a
long-float zero which was not EQL to the other zeroes of type LONG-FLOAT.
* Fixed a bug: Correctly do round-to-even when adding two long-floats.
* Fixed a bug: The destructive sequence functions DELETE etc. failed to
produce an error when called on a sequence of type LIST and with an :END
argument larger than the list's length.
* Corrected the branch cuts of the complex ATAN and ATANH functions.
5 April 1993
============
None.
30 March 1993
=============
User visible changes
--------------------
* Fixed a bug in + that caused the sign of (+ x y) to be wrong when x and y
were double-floats satisfying 0 < x < -y or 0 > x > -y .
* New special form LOAD-TIME-VALUE.
* The function DIR now sorts its output.
* A new place (DEFAULT-DIRECTORY) manages the "current directory".
* When LOAD is called with a pathname as argument that contains a parent
directory component (".."): Ignore the variable *LOAD-PATHS*, avoid an error.
* Fixed TRACE so that functions calling TRACE are correctly handled by
COMPILE-FILE.
19 March 1993
=============
User visible changes
--------------------
* Replaced variable *TEMPFILE* by a function EDITOR-TEMPFILE.
4 March 1993
============
User visible changes
--------------------
* Fixed a bug in ADJOIN that caused ADJOJN and PUSHNEW to push (key item)
instead of item onto the list when a :KEY argument was present.
* Amiga version: allow opening of "files" on special devices.
* OS/2 version: Long filenames on DOS (FAT) filesystems no longer produce
errors. They are now silently truncated to 8+3 characters.
* Unix, Amiga, OS/2 versions: When a pathname is to be fully specified, no
subdirectory wildcard "**/" or ".../" is allowed. Check this.
21 February 1993
================
User visible changes
--------------------
* Include test suite into distribution.
* Add COMMON-LISP and CLTL1 to the *FEATURES*.
* Fixed a bug in the compiler which caused the compiler to crash in some
rare cases.
* Fixed a bug in WITH-OPEN-FILE: handle the case when OPEN returns NIL.
* Amiga version: Fixed bug in FILE-POSITION.
* Amiga version: Renamed REXX-WAIT-COMMAND to REXX-WAIT-SENT-COMMAND.
3 February 1993
===============
None.
1 February 1993
===============
User visible changes
--------------------
* Fixed handling of declarations in macros DO-SYMBOLS, DO-EXTERNAL-SYMBOLS,
DO-ALL-SYMBOLS, DOSEQ, DOHASH.
* LISTEN on file streams opened with :DIRECTION :OUTPUT now returns NIL.
* Pathnames resulting from OPEN on special files are now called
"file handle streams", they are unbuffered file streams.
They can now be used as argument in situations where a pathname is expected.
11 January 1993
===============
User visible changes
--------------------
* Fixed meaning of :KEY argument for SUBLIS and NSUBLIS.
* DOS, OS/2 versions: adapted to emx 0.8f. This results in better
*KEYBOARD-INPUT* on DOS and faster screen access on OS/2.
* Amiga version: implemented SHELL.
* OS/2 version: implemented MAKE-PIPE-INPUT-STREAM and MAKE-PIPE-OUTPUT-STREAM.
* compiler.lsp: Emit a warning when #'foo is used but foo is undefined.
* rexx.d, rexx.lsp: remove the trailing "p" from the keywords.
* init.lsp: don't call a macro a "Common Lisp function".
* stream.d, readline/readline.[ch]: exported rl_deprep_terminal such that a
failing call to xmalloc() can now signal an ordinary error instead of exiting.
1 January 1993
==============
Release of first portable version of CLISP.